package drg_group.taizhou_2022.MDC;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import drg_group.taizhou_2022.Base;
import drg_group.taizhou_2022.MedicalRecord;
import drg_group.taizhou_2022.ADRG.*;

public class MDCH{
    public static String group(MedicalRecord record){
        String[] mdc_zd={"K73.000x001","B17.200","K76.401","S36.103","T86.400x018","K74.600x029","K80.300x005","K83.307","K65.007","I74.800x016","B17.904","K85.808","K80.303","K80.500x001","D37.700x003","K86.805","K76.101","T86.400x007","K74.000","K83.810","N82.201","C25.801","S36.200x092","A18.817+K87.1*","C24.001","K81.101","R16.200x001","S36.200","K74.616+I98.2*","C45.704","K76.400","D13.401","K82.900x001","K83.007","K76.816","K74.500","T86.400x001","K76.800x015","T86.401","K74.600x010","B19.901","K76.500x002","I82.001","Q45.002","B17.100x003","I87.803","K82.306","B16.202","K91.806","K74.620+I98.2*","K71.902+I98.2*","K76.807","S36.102","T81.800x006","K72.100","K85.902","S36.113","B65.900x010+K77.0*","D01.700","Q44.500x007","R93.302","D01.701","K70.300","B16.100x002","K80.306","R94.500","B16.903","C77.204","B16.100x003","K75.200","K75.400","K80.400x004","K80.401","B17.102","K83.011","B17.100","K71.100x003","K82.400","K86.812","K74.608","K82.804","K91.500","D37.600x004","C78.700","K82.800x004","D13.700x001","A06.400+K77.0*","K81.007","B16.200","C24.101","K92.800x006","K91.807","K85.100","B54.x00x003+K77.0*","K72.904","K76.801","K76.806","K86.803","K91.825","E80.601","K85.901","Z52.600x001","K80.507","K82.304","A18.816+K87.0*","B00.802+K77.0*","C78.800x009","B18.004","S36.111","S36.101","B19.002","I87.109","K82.301","B16.001","K83.902","D37.600x003","K76.800x009","K74.600x027","B25.101+K77.0*","K74.400","K86.106","C22.300","K71.903+I98.3*","C24.000x007","B66.100x001+K77.0*","S36.201","K74.300x006+I98.3*","K86.801","T86.800x021","S36.200x021","I77.000x017","B17.800x001","K82.900x002","B17.900x006","K72.900x001","K86.804","B16.101","K80.002","C25.100","K83.300","K83.814","K76.901","B18.106","S36.100x021","K86.101","K70.000","E80.501","B17.200x004","K80.202","K80.001","Q45.003","K71.002","Q44.201","K75.002","K80.203","I74.804","B19.001","K85.800x002","S36.100x051","K70.306+I98.3*","B15.003","C25.701","K91.822","K85.814","K76.809","K70.900","K70.305+I98.3*","K83.304","R93.200x001","K82.808","K83.809","K74.611","K86.200","K73.100","K71.600","B17.202","K83.301","C25.000","D13.701","K85.803","C25.800x001","D13.501","T86.400x011","K74.301+I98.2*","I86.809","K85.202","K71.100","K86.806","K74.600x002","B18.105","B67.500x001+K77.0*","Q44.003","B45.800x001","Q45.001","C22.301","K83.019","K86.800x002","T86.400x013","K85.801","Q44.300","K76.603","K92.800x009","T85.800x802","K85.818","Q44.101","K72.000x013","K82.800x002","B18.201","B15.903","B65.900x004+K77.0*","K74.302+I98.3*","Q45.301","B18.801","Q44.600","K86.817","K72.900x003+G94.3*","K76.800x021","B15.905","B16.905","K86.102","N82.302","D37.603","K76.102","B58.100+K77.0*","E80.603","K72.002","C25.400","B18.200x009","E85.415+K77.8*","K83.819","K85.817","B16.100","B16.100x004","K85.200","K76.800x022","K71.102","A51.400x008+K77.0*","K76.818","K83.401","K83.813","C25.802","K80.300x002","B18.100","K86.800x015","K80.000x004","K80.402","Q44.400","K82.001","K73.200x002","K83.010","K74.600x031","S36.112","E84.901","K82.302","B18.107","K72.005","K80.502","K86.100x004","B15.001","K80.000x002","B18.204","B16.201","K86.807","B67.000x001+K77.0*","K74.600x025","K74.605","K71.101","T86.400x003","B16.204","K73.900","K86.901","B17.101","Q27.804","K70.302+I98.3*","T82.813","K74.300x005+I98.2*","K71.000x002","K83.103","I87.121","T86.804","B05.800x003+K77.0*","K91.823","K81.006","S36.100x031","K86.800x001","B18.903","K91.841","K76.805","K85.002","C24.100","K83.200x001","C22.200","B65.903+K77.0*","K83.008","B17.900x004","K70.201","K70.301+I98.2*","K82.000x003","B67.800x001+K77.0*","K85.807","K76.602","K81.900x001","K92.801","K71.601","K85.000","K91.800x301","Q44.500x006","K75.800x001","R17.900x001","K85.102","K80.405","B18.002","B18.800x002","K71.500x001","K85.201","B18.803","B18.902","K75.901","K81.003","C22.001","M35.003+K77.8*","S36.200x011","K82.101","T86.400x010","K71.001","R16.000x001","K74.612","K82.803","K83.306","K76.800x003","B17.204","K86.300","K91.827","K71.800","T86.400x016","K71.901","K76.819","R93.201","T86.400x005","K83.016","S36.100x001","K71.500x002","K80.200x003","B17.203","Q85.900x019","K82.000","K82.303","K74.600x003","K86.810","K70.403","K83.005","Q85.911","K70.303+I98.2*","D01.503","C22.101","K76.500","K81.001","K71.701","B16.904","S36.100x011","A18.301","K86.811","K85.821","K80.403","K83.816","S36.200x001","B19.900","K73.800x001","S36.200x031","S36.200x091","D18.000x031","Q44.505","B26.802+K77.0*","E80.400","K82.801","K74.100","A52.705+K77.0*","K92.800x010","D01.500x001","C22.400","K71.700","B16.902","K85.101","K83.001","K70.400x002","K80.305","K86.809","K75.100","K83.100x001","K91.800x402","B00.803+K77.0*","K74.618+I98.3*","K71.100x005","K73.901","K75.804","D37.605","Q44.704","K85.822","K83.004","B18.802","K70.402","K72.902","C78.806","K83.014","K83.807","B17.801","K80.500x002","K91.826","S36.202","B18.800x004","K82.305","Q44.700x002","D37.600x002","K74.300","D01.501","B17.200x005","K82.802","K83.811","B44.803","K81.801","K83.800x012","K74.607","D13.500x001","K83.802","K80.100x001","K75.001","B18.001","B18.200","K83.102","K72.004","Q85.912","B65.906+I98.3*","Q44.004","K76.817","A18.815+K87.0*","C22.000","K73.801","B19.000","C24.000","B17.800x002","K74.614","K76.500x001","K83.013","I72.809","C25.401","K85.900x003","C22.900","K74.617+I98.3*","C24.003","K74.600x034","K83.012","C25.803","K76.810","D17.700x015","K83.108","B16.203","K85.301","T86.400x017","K85.302","I82.000x001","K76.600x006","K83.000x012","K72.000x005","K76.200","I77.100x011","S36.210","K83.817","K74.600x041","K86.800x013","K91.800x304","E80.500","D01.502","I72.800x072","K76.808","K74.613","Q44.700x004","K76.804","K86.000","R93.203","K83.818","Q44.700x003","Q44.702","K74.600x036","Q45.200","K83.000","B15.002","B18.805","K74.600x042","K80.504","K76.700x003","K75.003","C22.100","K76.900x002","K72.000x004","Q45.300x901","K74.200","Q44.102","K83.804","K91.800x401","B18.100x007","Q44.601","K83.107","K80.501","K85.800x003","K85.900","C22.700","M32.108+K77.8*","K83.400x001","K83.815","K86.107","K83.104","K74.610","K86.105","D37.705","B15.901","K91.800x403","S36.100x041","K82.200x002","A52.700x007+K77.0*","K71.702","B15.000","B17.000","K76.800x023","B16.000","C24.002","K70.401","B17.100x006","T86.400x004","B18.804","K76.600x007","K83.502","I86.808","K86.818","K74.604","K86.802","D37.601","K76.800x006","K86.815","Q45.300x904","Q44.504","R93.204","K72.001","E80.600x007","K83.800x022","D37.604","B17.205","D13.500","K83.808","T86.400x012","K76.800x026","K83.018","K75.806","B17.900x005","K81.000x008","B17.900","K70.901","K80.406","K86.816","K80.801","K83.305","K81.100","B18.800x001","K75.801","K75.401","K74.606","C78.807","D13.500x003","E80.602","K76.700x001","C24.800x001","K82.805","K82.806","Q27.805","B18.800x003","B25.100+K77.0*","B18.003","K83.803","B65.202+K77.0*","D37.600x001","K76.001","Q44.301","R93.205","C23.x00","B18.203","K74.300x008+I98.3*","C24.004","C25.900","K80.404","C78.808","A50.000x002+K77.0*","K92.800x012","K74.300x007+I98.2*","K80.400","K82.807","K83.009","K75.300x001","C24.800","Q44.100x003","K76.800x007","K85.802","K85.815","K74.603","K83.800x009","Q27.800x004","K80.302","Q44.705","B18.202","I81.x00x003","Q85.900x044","D13.400","B17.103","K74.600","Q44.502","I81.x00","K76.300","K86.103","K82.800x009","K75.800x006","K83.101","K85.816","K83.901","C24.900","B25.200+K87.1*","K71.200x001","K86.813","B18.800x005","Q45.100","K85.900x002","C25.200","K91.840","K75.000x003","B16.000x001","K76.700","E83.102","Q44.501","K83.501","B17.903","K76.600x002","K74.600x030","K70.100","Q44.703","T86.400x015","K75.803","K76.811","K83.303","I87.108","B17.800x003","K71.400x001","K71.100x008","T86.400x006","K71.600x002","I74.803","Q44.200","K71.103","K81.004","S36.100x081","K71.104","K82.200","K75.805","K76.815","K85.809","K80.301","Q27.304","K91.800x407","D18.013","K71.900x003","K76.800x027","B15.902","B18.900x006","K86.100x002","Q44.500x005","K76.803","K83.000x007","K83.006","K85.001","K74.601","B18.901","T86.400x014","R17.901","K71.100x007","K82.300","K72.003","K74.615+I98.3*","K83.105","K91.800x411","K71.300x001","K76.000","K81.002","K83.109","K81.008","Q44.001","Q44.701","B17.902","K83.015","K80.503","Q44.200x003","K80.505","B18.000","A01.001+K77.0*","B17.803","B15.900","K83.302","Q45.802","K75.000","K80.201","K83.017","Q44.100x002","B16.901","K71.100x006","D37.602","B18.104","B66.301","K76.813","K81.000","C77.203","K80.200x001","Q45.300x902","K83.100","E80.600x006","R17.900","K83.106","K82.100x002","A18.814+K77.0*","K74.619+I98.2*","K83.800x023","D37.706","R93.200x002","K81.900","B54.x00","D13.600","Q44.002","S36.110","K70.304+I98.2*","B18.900","K75.810","K85.813","C25.300","K74.602","K80.304","K80.506","K71.900","K76.601","K75.300","K80.800x001","Q44.503","K83.805","K86.814","S36.100x013","T86.400x009","B65.904+I98.2*","K70.001","K86.100x001","K80.101","K83.100x008","K81.005","B17.900x002","K76.814","K85.800x001","K86.104","K75.000x002","K86.808","K83.820","K85.300","E80.600x005","B26.300+K87.1*","K74.600x021","E80.600x008"};
        String[] dept_list={};
        if (!(true && Base.contains(mdc_zd,record.zdList[0]))){
            return "";
        }
        
        Base.groupMessages.putMessage(record.Index,"符合MDCH入组条件，匹配规则：主诊断匹配");
        String result;

        result=HB1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HC1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HC2.group(record);
        if (result.length()>0){
            return result;
        }

        result=HC3.group(record);
        if (result.length()>0){
            return result;
        }

        result=HJ1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HK1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HL1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HL2.group(record);
        if (result.length()>0){
            return result;
        }

        if (false && record.ssList!=null && record.ssList.length>0  && Base.intersect(Base.SS_VALID,record.ssList)){
            Base.groupMessages.putMessage(record.Index,"符合HQY入组条件，存在有效手术操作："+String.join(",",Base.Intersect(record.ssList,Base.SS_VALID)));
            return "HQY";
        }

        result=HR1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HS1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HS2.group(record);
        if (result.length()>0){
            return result;
        }

        result=HS3.group(record);
        if (result.length()>0){
            return result;
        }

        result=HT1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HT2.group(record);
        if (result.length()>0){
            return result;
        }

        result=HU1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HZ1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HZ2.group(record);
        if (result.length()>0){
            return result;
        }

        result=HZ3.group(record);
        if (result.length()>0){
            return result;
        }

        Base.groupMessages.putMessage(record.Index,"不符合MDCH的ADRG入组条件");
        return "";
    }
}

